package com.sky.aspect;

import com.sky.anno.AutoFill2;
import com.sky.enums.AutoFillType2;
import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

/**
 * 公共字段填充
 * */
@Aspect
@Component
@Slf4j
public class AutoFillAspect2 {

    @Before("@annotation(autoFill)")
    public void before(JoinPoint jp, AutoFill2 autoFill){
        log.info(jp.toString());
        // 获取业务方法的参数
        Object[] args = jp.getArgs();
        // 获取填充类型
        AutoFillType2 type = autoFill.type();
        // 获取填充策略
        AutoFillStrategy autoFillStrategy = AutoFillType2Factory.getAutoFillStrategy(type);
        try{
            // 执行填充策略
            autoFillStrategy.autoFill(args[0]);
        }catch(Exception e){
            log.info(e.getMessage(), e);
        }
    }

}
